<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>every与some的用法</title>
</head>
<body>
    <input type="text" name="" id="">
    <span></span>
</body>
<script>
    let arr = ['jimmy','ysh']

    /*
        every 和 some都是数组的方法
            他们的返回值都是布尔值的类型  常常用来判断是否有某些元素
                every()  只有当都满足条件的时候才会返回true  有一个不符合条件都会返回false 
                    例子：  判断是否全班同学及格
                some()  这个和逻辑或的原理基本是一样的  有一个满足就会不会执行以后的代码 ， 这个也叫做半执行  这样的性能也好 不会浪费性能
                    例子：  判断输入的字符串中是否含有指定的关键字
    */

    let sattus = arr.every((item,index,arr)=>{
        console.log(item)
        return false
    })
    console.log(status)

    // 例1 判断全班同学是否都及格
    let scrose = [
        {name:'jimmy',js:88},
        {name:'xuexue',js:68},
        {name:'chaochao',js:40}
    ]
    let res = scrose.every(item=>{
        if(item.js >= 60){
            return true
        }else{
            return false
        }
    })
    // console.log()里面也是可以放表达式的
    console.log(res?'全部及格':'有同学不及格')

    let status1 = arr.some((item,index,arr)=>{
        console.log(item)
        return false
    })
    console.log(status1)

    // 例子2  判断输入的字符串中是否含有指定的关键字
    let keywords = ['zhangxue','jimmy']
    let resa
    // 要获取input标签的值 要使用input.value  而不是 input.innerHTML
    document.querySelector('input').addEventListener('keyup',function(){
        console.log(this.value)
        resa = keywords.some(item=>{
            console.log(this.value.indexOf(item))
            return this.value.indexOf(item) !== -1
        })
        document.querySelector('span').innerHTML = resa ? '符合':'不符合关键字要求'
    })
    // console.log(resa)

    /*
        下面这句话是无论如何返回都是不符合关键字要求的 
            原因很简单，  关于resa的处理都是异步的 浏览器不会先去执行resa  浏览器会先完成主线任务 
                当主线任务做到这一句的时候  resa还没有赋值  所以无论如何都不会处理  
                    正确的实例方式是将这句话也放在 异步对象的处理中去
    */
    //document.querySelector('span').innerHTML = resa ? '符合':'不符合关键字要求'
</script>
</html>